<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>Glitch text with image background</title>
  <style>
  	*{margin: 0;padding: 0;}
		.center {
		  display: flex;
		  width: 100vw;
		  height: 100vh;
		  background-color: black;
		  background-image: url(https://images.unsplash.com/photo-1446080501695-8e929f879f2b?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&s=34658e73aff775c8d4eec54bbfd1c011);
		  background-repeat: no-repeat;
		  background-position: center;
		  background-size: cover;
		}

		.center__text {
		  margin: auto;
		  font-family: 'Montserrat', sans-serif;
		  font-size: 120px;
		  text-transform: uppercase;
		}

		.glitch {
		  position: relative;
		  color: white;
		  mix-blend-mode: lighten;
		}
		.glitch:before, .glitch:after {
		  content: attr(data-text);
		  position: absolute;
		  top: 0;
		  width: 100%;
		  background: black;
		  clip: rect(0, 0, 0, 0);
		}
		.glitch:before {
		  left: -1px;
		  text-shadow: 1px 0 rgba(255, 0, 0, 0.7);
		}
		.glitch:after {
		  left: 1px;
		  text-shadow: -1px 0 rgba(0, 0, 255, 0.7);
		}
		.glitch:hover:before {
		  text-shadow: 4px 0 rgba(255, 0, 0, 0.7);
		  animation: glitch-loop-1 0.8s infinite ease-in-out alternate-reverse;
		}
		.glitch:hover:after {
		  text-shadow: -5px 0 rgba(0, 0, 255, 0.7);
		  animation: glitch-loop-2 0.8s infinite ease-in-out alternate-reverse;
		}

		@-webkit-keyframes glitch-loop-1 {
		  0% {
		    clip: rect(36px, 9999px, 9px, 0);
		  }
		  25% {
		    clip: rect(25px, 9999px, 99px, 0);
		  }
		  50% {
		    clip: rect(50px, 9999px, 102px, 0);
		  }
		  75% {
		    clip: rect(30px, 9999px, 92px, 0);
		  }
		  100% {
		    clip: rect(91px, 9999px, 98px, 0);
		  }
		}

		@keyframes glitch-loop-1 {
		  0% {
		    clip: rect(36px, 9999px, 9px, 0);
		  }
		  25% {
		    clip: rect(25px, 9999px, 99px, 0);
		  }
		  50% {
		    clip: rect(50px, 9999px, 102px, 0);
		  }
		  75% {
		    clip: rect(30px, 9999px, 92px, 0);
		  }
		  100% {
		    clip: rect(91px, 9999px, 98px, 0);
		  }
		}
		@-webkit-keyframes glitch-loop-2 {
		  0% {
		    top: -1px;
		    left: 1px;
		    clip: rect(65px, 9999px, 119px, 0);
		  }
		  25% {
		    top: -6px;
		    left: 4px;
		    clip: rect(79px, 9999px, 19px, 0);
		  }
		  50% {
		    top: -3px;
		    left: 2px;
		    clip: rect(68px, 9999px, 11px, 0);
		  }
		  75% {
		    top: 0px;
		    left: -4px;
		    clip: rect(95px, 9999px, 53px, 0);
		  }
		  100% {
		    top: -1px;
		    left: -1px;
		    clip: rect(31px, 9999px, 149px, 0);
		  }
		}
		@keyframes glitch-loop-2 {
		  0% {
		    top: -1px;
		    left: 1px;
		    clip: rect(65px, 9999px, 119px, 0);
		  }
		  25% {
		    top: -6px;
		    left: 4px;
		    clip: rect(79px, 9999px, 19px, 0);
		  }
		  50% {
		    top: -3px;
		    left: 2px;
		    clip: rect(68px, 9999px, 11px, 0);
		  }
		  75% {
		    top: 0px;
		    left: -4px;
		    clip: rect(95px, 9999px, 53px, 0);
		  }
		  100% {
		    top: -1px;
		    left: -1px;
		    clip: rect(31px, 9999px, 149px, 0);
		  }
		}

  </style>
</head>
<body>
<div class="center">
  <h1 class="center__text glitch is-glitching" data-text="HOVER ME!">HOVER ME!</h1>
</div>
</body>
</html>